/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


package com.moxiu.browser.view;

import com.moxiu.launcher.R;
import com.moxiu.browser.UiController;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;


public class CustomScreenLinearLayout extends RelativeLayout {

    public CustomScreenLinearLayout(Context context) {
        super(context);
//        setChildrenDrawingOrderEnabled(true);
    }

    public CustomScreenLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
//        setChildrenDrawingOrderEnabled(true);
    }

    public CustomScreenLinearLayout(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
//        setChildrenDrawingOrderEnabled(true);
    }

//    @Override
//    protected int getChildDrawingOrder(int childCount, int i) {
//        return childCount - i - 1;
//    }
    
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
    	
    	ifNeedCloseMenu(ev);
    	
    	return super.onInterceptTouchEvent(ev);
    }
    
    private void ifNeedCloseMenu(MotionEvent ev) {
    	if (ev.getAction() != MotionEvent.ACTION_DOWN) {
    		return;
    	}
    	
    	
    	View menu = findViewById(R.id.bottom_menu);
    	if (menu.getVisibility() != View.VISIBLE) {
    		return;
    	}
    	
    	if (inRangeOfView(menu, ev)) {
    		return;
    	}
    	
    	View bottomNav = findViewById(R.id.ga_bottom_container);
    	
    	if (inRangeOfView(bottomNav, ev)) {
    		return;
    	}
    	
    	if (mUiController != null) {
    		mUiController.hideBottomMenu();
    	}
    	
    }
    
	private boolean inRangeOfView(View view, MotionEvent ev) {
		
		int[] location = new int[2];
		view.getLocationOnScreen(location);
		int x = location[0];
		int y = location[1];
		if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y || ev.getY() > (y + view.getHeight())) {
			return false;
		}
		return true;
	}
	private UiController mUiController;
	public void setUiController(UiController uiController) {
		mUiController = uiController;
		
	}

}
